package com.bidr.authorization.dao.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.bidr.authorization.mybatis.anno.AccountContextFill;
import com.bidr.kernel.mybatis.anno.AutoInsert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 用户信息表
 */
@ApiModel(description = "用户信息表")
@Data
@TableName(value = "ac_user")
@AccountContextFill
public class AcUser {
    /**
     * 用户ID
     */
    @TableId(value = "user_id", type = IdType.AUTO)
    @ApiModelProperty(value = "用户ID")
    @NotNull(message = "用户ID不能为null")
    private Long userId;

    /**
     * 用户编码
     */
    @TableField(value = "customer_number", fill = FieldFill.INSERT)
    @ApiModelProperty(value = "用户编码")
    @Size(max = 50, message = "用户编码最大长度要小于 50")
    @NotBlank(message = "用户编码不能为空")
    @AutoInsert(seq = "AC_USER_CUSTOMER_NUMBER_SEQ")
    private String customerNumber;

    /**
     * 微信id
     */
    @TableField(value = "wechat_id")
    @ApiModelProperty(value = "微信id")
    @Size(max = 50, message = "微信id最大长度要小于 50")
    private String wechatId;

    /**
     * 身份证id
     */
    @TableField(value = "id_number")
    @ApiModelProperty(value = "身份证id")
    @Size(max = 50, message = "身份证id最大长度要小于 50")
    private String idNumber;

    /**
     * 用户姓名
     */
    @TableField(value = "`name`")
    @ApiModelProperty(value = "用户姓名")
    @Size(max = 50, message = "用户姓名最大长度要小于 50")
    private String name;

    /**
     * 部门ID
     */
    @TableField(value = "dept_id")
    @ApiModelProperty(value = "部门ID")
    @Size(max = 50, message = "部门ID最大长度要小于 50")
    private String deptId;

    /**
     * 用户账号
     */
    @TableField(value = "user_name")
    @ApiModelProperty(value = "用户账号")
    @Size(max = 30, message = "用户账号最大长度要小于 30")
    @NotBlank(message = "用户账号不能为空")
    private String userName;

    /**
     * 用户昵称
     */
    @TableField(value = "nick_name")
    @ApiModelProperty(value = "用户昵称")
    @Size(max = 30, message = "用户昵称最大长度要小于 30")
    private String nickName;

    /**
     * 用户类型（00系统用户）
     */
    @TableField(value = "user_type")
    @ApiModelProperty(value = "用户类型（00系统用户）")
    @Size(max = 2, message = "用户类型（00系统用户）最大长度要小于 2")
    private String userType;

    /**
     * 用户邮箱
     */
    @TableField(value = "email")
    @ApiModelProperty(value = "用户邮箱")
    @Size(max = 50, message = "用户邮箱最大长度要小于 50")
    private String email;

    /**
     * 手机号码
     */
    @TableField(value = "phone_number")
    @ApiModelProperty(value = "手机号码")
    @Size(max = 11, message = "手机号码最大长度要小于 11")
    private String phoneNumber;

    /**
     * 用户性别（1男 2女）
     */
    @TableField(value = "sex")
    @ApiModelProperty(value = "用户性别（1男 2女）")
    @Size(max = 1, message = "用户性别（1男 2女）最大长度要小于 1")
    private String sex;

    /**
     * 头像地址
     */
    @TableField(value = "avatar")
    @ApiModelProperty(value = "头像地址")
    @Size(max = 500, message = "头像地址最大长度要小于 500")
    private String avatar;

    /**
     * 密码
     */
    @TableField(value = "`password`")
    @ApiModelProperty(value = "密码")
    @Size(max = 100, message = "密码最大长度要小于 100")
    private String password;

    /**
     * 密码输入错误次数
     */
    @TableField(value = "password_error_time")
    @ApiModelProperty(value = "密码输入错误次数")
    private Integer passwordErrorTime;

    /**
     * 上次密码修改时间
     */
    @TableField(value = "password_last_time")
    @ApiModelProperty(value = "上次密码修改时间")
    private Date passwordLastTime;

    /**
     * 帐号状态ACTIVE_STATUS_DICT
     */
    @TableField(value = "`status`")
    @ApiModelProperty(value = "帐号状态ACTIVE_STATUS_DICT")
    private Integer status;

    /**
     * 最后登录IP
     */
    @TableField(value = "login_ip")
    @ApiModelProperty(value = "最后登录IP")
    @Size(max = 128, message = "最后登录IP最大长度要小于 128")
    private String loginIp;

    /**
     * 最后登录时间
     */
    @TableField(value = "login_date")
    @ApiModelProperty(value = "最后登录时间")
    private Date loginDate;

    /**
     * 创建者
     */
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建者")
    @Size(max = 50, message = "创建者最大长度要小于 50")
    private String createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_at")
    @ApiModelProperty(value = "创建时间")
    private Date createAt;

    /**
     * 更新者
     */
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "更新者")
    @Size(max = 50, message = "更新者最大长度要小于 50")
    private String updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_at")
    @ApiModelProperty(value = "更新时间")
    private Date updateAt;

    /**
     * 备注
     */
    @TableField(value = "remark")
    @ApiModelProperty(value = "备注")
    @Size(max = 500, message = "备注最大长度要小于 500")
    private String remark;

    /**
     * 有效性
     */
    @TableField(value = "`valid`")
    @ApiModelProperty(value = "有效性")
    @Size(max = 1, message = "有效性最大长度要小于 1")
    private String valid;
}